export const tasks = [
  {
    taskID: '9527',
    name: '【网络安全】训练一个入侵检测模型',
    status: 'Processing',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/04/11 22:52',
    username: 'developer',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004', '127.0.0.1:6005', '127.0.0.1:6006', '127.0.0.1:6007', '127.0.0.1:6008', '127.0.0.1:6009', '127.0.0.1:6010'],
    server: '127.0.0.1:3001',
    description: unescape("%3Ch1%3E1.%u6570%u636E%u96C6%u4ECB%u7ECD%3C/h1%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%09%u6570%u636E%u96C6%u4E2D%u6BCF%u4E2A%u7F51%u7EDC%u8FDE%u63A5%u88AB%u6807%u8BB0%u4E3A%u6B63%u5E38%uFF08normal%uFF09%u6216%u5F02%u5E38%uFF08attack%uFF09%uFF0C%u5F02%u5E38%u7C7B%u578B%u88AB%u7EC6%u5206%u4E3A4%u5927%u7C7B%u517139%u79CD%u653B%u51FB%u7C7B%u578B%uFF0C%u5176%u4E2D22%u79CD%u653B%u51FB%u7C7B%u578B%u51FA%u73B0%u5728%u8BAD%u7EC3%u96C6%u4E2D%uFF0C%u53E6%u670917%u79CD%u672A%u77E5%u653B%u51FB%u7C7B%u578B%u51FA%u73B0%u5728%u6D4B%u8BD5%u96C6%u4E2D%uFF0C%u8FD9%u6837%u8BBE%u8BA1%u7684%u76EE%u7684%u662F%u68C0%u9A8C%u5206%u7C7B%u5668%u6A21%u578B%u7684%u6CDB%u5316%u80FD%u529B%uFF0C%u5BF9%u672A%u77E5%u653B%u51FB%u7C7B%u578B%u7684%u68C0%u6D4B%u80FD%u529B%u662F%u8BC4%u4EF7%u5165%u4FB5%u68C0%u6D4B%u7CFB%u7EDF%u597D%u574F%u7684%u91CD%u8981%u6307%u6807%u30024%u79CD%u5F02%u5E38%u7C7B%u578B%u5982%u88681%u6240%u793A%u3002%3C/p%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%09KDDCup99%u8BAD%u7EC3%u6570%u636E%u96C6%u4E2D%u6BCF%u4E2A%u8FDE%u63A5%u8BB0%u5F55%u5305%u542B%u4E8641%u4E2A%u56FA%u5B9A%u7684%u7279%u5F81%u5C5E%u6027%u548C1%u4E2A%u7C7B%u6807%u8BC6%uFF0C%u6807%u8BC6%u7528%u6765%u8868%u793A%u8BE5%u6761%u8FDE%u63A5%u8BB0%u5F55%u662F%u6B63%u5E38%u7684%uFF0C%u6216%u662F%u67D0%u4E2A%u5177%u4F53%u7684%u653B%u51FB%u7C7B%u578B%u3002%u572841%u4E2A%u56FA%u5B9A%u7684%u7279%u5F81%u5C5E%u6027%u4E2D%uFF0C9%u4E2A%u7279%u5F81%u5C5E%u6027%u4E3A%u79BB%u6563%28symbolic%29%u578B%2C%u5176%u4ED6%u5747%u4E3A%u8FDE%u7EED%28continuous%29%u578B%u3002%3C/p%3E%3Cp%3E%u5C5E%u6027%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3Eduration%2Cprotocol_type%2Cservice%2Cflag%2Csrc_bytes%2Cdst_bytes%2Cland%2Cwrong_fragment%2Curgent%2Cho%2Cnum_failed_logins%2Clogged_in%2Cnum_compromised%2Croot_shell%2Csu_attempted%2Cnum_root%2Cnum_file_creations%2Cnum_shells%2Cnum_access_files%2Cnum_outbound_cmds%2Cis_host_login%2Cis_guest_login%2Ccount%2Csrv_count%2Cserror_rate%2Csrv_serror_rate%2Crerror_rate%2Csrv_rerror_rate%2Csame_srv_rate%2Cdiff_srv_rate%2Csrv_diff_host_rate%2Cdst_host_count%2Cdst_host_srv_count%2Cdst_host_same_srv_rate%2Cdst_host_diff_srv_rate%2Cdst_host_same_src_port_rate%2Cdst_host_srv_diff_host_rate%2Cdst_host_serror_rate%2Cdst_host_srv_serror_rate%2Cdst_host_rerror_rate%2Cdst_host_srv_rerror_rate%2Cclass%0A%3C/pre%3E%3Cp%3E%u5B9E%u4F8B%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3E0%2Cudp%2Cprivate%2CSF%2C105%2C146%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C1%2C1%2C0.00%2C0.00%2C0.00%2C0.00%2C1.00%2C0.00%2C0.00%2C255%2C254%2C1.00%2C0.01%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2Cnormal.%0A0%2Cudp%2Cprivate%2CSF%2C105%2C146%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C2%2C2%2C0.00%2C0.00%2C0.00%2C0.00%2C1.00%2C0.00%2C0.00%2C255%2C254%2C1.00%2C0.01%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2Csnmpgetattack.%0A%3C/pre%3E%3Cp%3E%3Cimg%20src%3D%22https%3A//img-blog.csdnimg.cn/20191231143428495.png%3Fx-oss-process%3Dimage/watermark%2Ctype_ZmFuZ3poZW5naGVpdGk%2Cshadow_10%2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDgwODc1%2Csize_16%2Ccolor_FFFFFF%2Ct_70%22%3E%3C/p%3E%3Ch1%3E2.%u673A%u5668%u5B66%u4E60%u7B97%u6CD5%u4F7F%u7528%3C/h1%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%u4F7F%u75281%u5C42softmax%u7684%u903B%u8F91%u56DE%u5F52%u5373%u53EF%uFF0C%u4EE3%u7801%u5982%u4E0B%u6240%u793A%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3Eclass%20SoftMaxModel%3A%0A%0A%20%20%20%20def%20__init__%28self%2C%20dataset%2C%20numClasses%29%3A%0A%0A%20%20%20%20%20%20%20%20data%20%3D%20utils.load_dataset%28dataset%2C%20npy%3DTrue%29%0A%0A%20%20%20%20%20%20%20%20self.dataset%20%3D%20dataset%0A%20%20%20%20%20%20%20%20self.X%20%3D%20data%5B%27X%27%5D%0A%20%20%20%20%20%20%20%20self.y%20%3D%20data%5B%27y%27%5D%0A%20%20%20%20%20%20%20%20self.n_classes%20%3D%20numClasses%0A%20%20%20%20%20%20%20%20self.d%20%3D%20self.X.shape%5B1%5D%20*%20self.n_classes%0A%20%20%20%20%20%20%20%20self.lammy%20%3D%200.01%0A%20%20%20%20%20%20%20%20self.alpha%20%3D%200.01%0A%0A%20%20%20%20def%20get_data%28self%29%3A%0A%20%20%20%20%20%20%20%20return%20self.X%2C%20self.y%0A%0A%20%20%20%20def%20funObj%28self%2C%20ww%2C%20Xbatch%2C%20ybatch%2C%20batch_size%29%3A%0A%20%20%20%20%20%20%20%20n%2C%20d%20%3D%20Xbatch.shape%0A%0A%20%20%20%20%20%20%20%20W%20%3D%20np.reshape%28ww%2C%20%28self.n_classes%2C%20d%29%29%0A%0A%20%20%20%20%20%20%20%20y_binary%20%3D%20np.zeros%28%28n%2C%20self.n_classes%29%29.astype%28bool%29%0A%20%20%20%20%20%20%20%20y_binary%5Bnp.arange%28n%29%2C%20ybatch.astype%28int%29%5D%20%3D%201%0A%0A%20%20%20%20%20%20%20%20XW%20%3D%20np.dot%28Xbatch%2C%20W.T%29%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Calculate%20the%20function%20value%0A%20%20%20%20%20%20%20%20f%20%3D%20-%20np.sum%28XW%5By_binary%5D%20-%20logsumexp%28XW%29%29%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Prevents%20overflow%0A%20%20%20%20%20%20%20%20XW%20%3D%20XW%20-%20np.max%28XW%29%20%0A%20%20%20%20%20%20%20%20Z%20%3D%20np.sum%28np.exp%28XW%29%2C%20axis%3D1%29%0A%20%20%20%20%20%20%20%20v%20%3D%20np.exp%28XW%29%20/%20Z%5B%3A%2C%20None%5D%0A%20%20%20%20%20%20%20%20v%5Bnp.isnan%28v%29%5D%20%3D%200%0A%20%20%20%20%20%20%20%20res%20%3D%20np.dot%28%28v%20-%20y_binary%29.T%2C%20Xbatch%29%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20the%20gradient%20value%0A%20%20%20%20%20%20%20%20g%20%3D%20%281%20/%20batch_size%29%20*%20res%20+%20self.lammy%20*%20W%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20if%20True%20in%20np.isnan%28g%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20pdb.set_trace%28%29%0A%0A%20%20%20%20%20%20%20%20return%20f%2C%20g.flatten%28%29%0A%0A%0A%20%20%20%20def%20privateFun%28self%2C%20ww%2C%20batch_size%3D0%2C%20num_iterations%3D1%2C%20iter_num%3D0%29%3A%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%27%27%27%0A%20%20%20%20%20%20%20%20Reports%20the%20direct%20change%20to%20be%20applied%2C%20based%20on%20the%20given%20model.%0A%20%20%20%20%20%20%20%20Batch%20size%20could%20be%201%20for%20SGD%2C%20or%200%20for%20full%20gradient.%0A%20%20%20%20%20%20%20%20Specify%20the%20number%20of%20iterations%20for%20batching%20multiple%20iterations%20as%20in%20FEDAVG%0A%20%20%20%20%20%20%20%20%27%27%27%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Sudden%20adaptive%20attacks%20on%20training%20process%0A%0A%20%20%20%20%20%20%20%20%23%20Direct%0A%20%20%20%20%20%20%20%20%23%20if%20iter_num%20%26gt%3B%2015000%20and%20%28%22untargeted%22%20in%20self.dataset%29%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20return%20np.zeros%28ww.shape%5B0%5D%29%2C%200%0A%0A%20%20%20%20%20%20%20%20%23%20Slow%0A%20%20%20%20%20%20%20%20%23%20if%20iter_num%20%26gt%3B%20500000%20and%20%28%22untargeted%22%20in%20self.dataset%29%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%23return%20np.zeros%28ww.shape%5B0%5D%29%2C%200%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%23Linearly%20interpolate%20down%20the%20learning%20rate%20from%205000%20onwards%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20self.alpha%20%3D%20max%280.005%20-%20%280.0000005%20*%20%28iter_num%20-%205000%29%29%2C%200%29%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20if%20self.alpha%20%26lt%3B%200%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%20%20%20%20pdb.set_trace%28%29%0A%0A%20%20%20%20%20%20%20%20%23%20Take%20the%20total%20gradient%20locally%20over%20multiple%20iterations%0A%20%20%20%20%20%20%20%20ww%20%3D%20np.array%28ww%29%0A%20%20%20%20%20%20%20%20total_delta%20%3D%20np.zeros%28ww.shape%5B0%5D%29%0A%0A%20%20%20%20%20%20%20%20for%20it%20in%20range%28num_iterations%29%3A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Define%20constants%20and%20params%0A%20%20%20%20%20%20%20%20%20%20%20%20nn%2C%20dd%20%3D%20self.X.shape%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20batch_size%20%26gt%3B%200%20and%20batch_size%20%26lt%3B%20nn%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20idx%20%3D%20np.random.choice%28nn%2C%20batch_size%2C%20replace%3DFalse%29%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Just%20take%20the%20full%20range%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20idx%20%3D%20range%28nn%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20f%2C%20g%20%3D%20self.funObj%28ww%2C%20self.X%5Bidx%2C%20%3A%5D%2C%20self.y%5Bidx%5D%2C%20batch_size%29%0A%20%20%20%20%20%20%20%20%20%20%20%20delta%20%3D%20-self.alpha%20*%20g%0A%0A%20%20%20%20%20%20%20%20ww%20%3D%20ww%20+%20delta%0A%20%20%20%20%20%20%20%20total_delta%20%3D%20total_delta%20+%20delta%0A%0A%20%20%20%20%20%20%20%20return%20total_delta%2C%20f%0A%0A%0A%3C/pre%3E")
  },
  {
    taskID: '9528',
    name: '【图像识别】训练一个手写识别模型',
    status: 'Closed',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2021/04/11 22:18',
    username: 'developer',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001'
  },
  {
    taskID: '9529',
    name: '【网络安全】训练一个入侵检测模型',
    status: 'Waiting',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 5,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/11/11 12:52',
    username: 'user220',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001',
    description: unescape("%3Ch1%3E1.%u6570%u636E%u96C6%u4ECB%u7ECD%3C/h1%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%09%u6570%u636E%u96C6%u4E2D%u6BCF%u4E2A%u7F51%u7EDC%u8FDE%u63A5%u88AB%u6807%u8BB0%u4E3A%u6B63%u5E38%uFF08normal%uFF09%u6216%u5F02%u5E38%uFF08attack%uFF09%uFF0C%u5F02%u5E38%u7C7B%u578B%u88AB%u7EC6%u5206%u4E3A4%u5927%u7C7B%u517139%u79CD%u653B%u51FB%u7C7B%u578B%uFF0C%u5176%u4E2D22%u79CD%u653B%u51FB%u7C7B%u578B%u51FA%u73B0%u5728%u8BAD%u7EC3%u96C6%u4E2D%uFF0C%u53E6%u670917%u79CD%u672A%u77E5%u653B%u51FB%u7C7B%u578B%u51FA%u73B0%u5728%u6D4B%u8BD5%u96C6%u4E2D%uFF0C%u8FD9%u6837%u8BBE%u8BA1%u7684%u76EE%u7684%u662F%u68C0%u9A8C%u5206%u7C7B%u5668%u6A21%u578B%u7684%u6CDB%u5316%u80FD%u529B%uFF0C%u5BF9%u672A%u77E5%u653B%u51FB%u7C7B%u578B%u7684%u68C0%u6D4B%u80FD%u529B%u662F%u8BC4%u4EF7%u5165%u4FB5%u68C0%u6D4B%u7CFB%u7EDF%u597D%u574F%u7684%u91CD%u8981%u6307%u6807%u30024%u79CD%u5F02%u5E38%u7C7B%u578B%u5982%u88681%u6240%u793A%u3002%3C/p%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%09KDDCup99%u8BAD%u7EC3%u6570%u636E%u96C6%u4E2D%u6BCF%u4E2A%u8FDE%u63A5%u8BB0%u5F55%u5305%u542B%u4E8641%u4E2A%u56FA%u5B9A%u7684%u7279%u5F81%u5C5E%u6027%u548C1%u4E2A%u7C7B%u6807%u8BC6%uFF0C%u6807%u8BC6%u7528%u6765%u8868%u793A%u8BE5%u6761%u8FDE%u63A5%u8BB0%u5F55%u662F%u6B63%u5E38%u7684%uFF0C%u6216%u662F%u67D0%u4E2A%u5177%u4F53%u7684%u653B%u51FB%u7C7B%u578B%u3002%u572841%u4E2A%u56FA%u5B9A%u7684%u7279%u5F81%u5C5E%u6027%u4E2D%uFF0C9%u4E2A%u7279%u5F81%u5C5E%u6027%u4E3A%u79BB%u6563%28symbolic%29%u578B%2C%u5176%u4ED6%u5747%u4E3A%u8FDE%u7EED%28continuous%29%u578B%u3002%3C/p%3E%3Cp%3E%u5C5E%u6027%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3Eduration%2Cprotocol_type%2Cservice%2Cflag%2Csrc_bytes%2Cdst_bytes%2Cland%2Cwrong_fragment%2Curgent%2Cho%2Cnum_failed_logins%2Clogged_in%2Cnum_compromised%2Croot_shell%2Csu_attempted%2Cnum_root%2Cnum_file_creations%2Cnum_shells%2Cnum_access_files%2Cnum_outbound_cmds%2Cis_host_login%2Cis_guest_login%2Ccount%2Csrv_count%2Cserror_rate%2Csrv_serror_rate%2Crerror_rate%2Csrv_rerror_rate%2Csame_srv_rate%2Cdiff_srv_rate%2Csrv_diff_host_rate%2Cdst_host_count%2Cdst_host_srv_count%2Cdst_host_same_srv_rate%2Cdst_host_diff_srv_rate%2Cdst_host_same_src_port_rate%2Cdst_host_srv_diff_host_rate%2Cdst_host_serror_rate%2Cdst_host_srv_serror_rate%2Cdst_host_rerror_rate%2Cdst_host_srv_rerror_rate%2Cclass%0A%3C/pre%3E%3Cp%3E%u5B9E%u4F8B%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3E0%2Cudp%2Cprivate%2CSF%2C105%2C146%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C1%2C1%2C0.00%2C0.00%2C0.00%2C0.00%2C1.00%2C0.00%2C0.00%2C255%2C254%2C1.00%2C0.01%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2Cnormal.%0A0%2Cudp%2Cprivate%2CSF%2C105%2C146%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C0%2C2%2C2%2C0.00%2C0.00%2C0.00%2C0.00%2C1.00%2C0.00%2C0.00%2C255%2C254%2C1.00%2C0.01%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2C0.00%2Csnmpgetattack.%0A%3C/pre%3E%3Cp%3E%3Cimg%20src%3D%22https%3A//img-blog.csdnimg.cn/20191231143428495.png%3Fx-oss-process%3Dimage/watermark%2Ctype_ZmFuZ3poZW5naGVpdGk%2Cshadow_10%2Ctext_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NDgwODc1%2Csize_16%2Ccolor_FFFFFF%2Ct_70%22%3E%3C/p%3E%3Ch1%3E2.%u673A%u5668%u5B66%u4E60%u7B97%u6CD5%u4F7F%u7528%3C/h1%3E%3Cp%3E%3Cbr%3E%3C/p%3E%3Cp%3E%u4F7F%u75281%u5C42softmax%u7684%u903B%u8F91%u56DE%u5F52%u5373%u53EF%uFF0C%u4EE3%u7801%u5982%u4E0B%u6240%u793A%uFF1A%3C/p%3E%3Cpre%20class%3D%22ql-syntax%22%20spellcheck%3D%22false%22%3Eclass%20SoftMaxModel%3A%0A%0A%20%20%20%20def%20__init__%28self%2C%20dataset%2C%20numClasses%29%3A%0A%0A%20%20%20%20%20%20%20%20data%20%3D%20utils.load_dataset%28dataset%2C%20npy%3DTrue%29%0A%0A%20%20%20%20%20%20%20%20self.dataset%20%3D%20dataset%0A%20%20%20%20%20%20%20%20self.X%20%3D%20data%5B%27X%27%5D%0A%20%20%20%20%20%20%20%20self.y%20%3D%20data%5B%27y%27%5D%0A%20%20%20%20%20%20%20%20self.n_classes%20%3D%20numClasses%0A%20%20%20%20%20%20%20%20self.d%20%3D%20self.X.shape%5B1%5D%20*%20self.n_classes%0A%20%20%20%20%20%20%20%20self.lammy%20%3D%200.01%0A%20%20%20%20%20%20%20%20self.alpha%20%3D%200.01%0A%0A%20%20%20%20def%20get_data%28self%29%3A%0A%20%20%20%20%20%20%20%20return%20self.X%2C%20self.y%0A%0A%20%20%20%20def%20funObj%28self%2C%20ww%2C%20Xbatch%2C%20ybatch%2C%20batch_size%29%3A%0A%20%20%20%20%20%20%20%20n%2C%20d%20%3D%20Xbatch.shape%0A%0A%20%20%20%20%20%20%20%20W%20%3D%20np.reshape%28ww%2C%20%28self.n_classes%2C%20d%29%29%0A%0A%20%20%20%20%20%20%20%20y_binary%20%3D%20np.zeros%28%28n%2C%20self.n_classes%29%29.astype%28bool%29%0A%20%20%20%20%20%20%20%20y_binary%5Bnp.arange%28n%29%2C%20ybatch.astype%28int%29%5D%20%3D%201%0A%0A%20%20%20%20%20%20%20%20XW%20%3D%20np.dot%28Xbatch%2C%20W.T%29%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Calculate%20the%20function%20value%0A%20%20%20%20%20%20%20%20f%20%3D%20-%20np.sum%28XW%5By_binary%5D%20-%20logsumexp%28XW%29%29%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Prevents%20overflow%0A%20%20%20%20%20%20%20%20XW%20%3D%20XW%20-%20np.max%28XW%29%20%0A%20%20%20%20%20%20%20%20Z%20%3D%20np.sum%28np.exp%28XW%29%2C%20axis%3D1%29%0A%20%20%20%20%20%20%20%20v%20%3D%20np.exp%28XW%29%20/%20Z%5B%3A%2C%20None%5D%0A%20%20%20%20%20%20%20%20v%5Bnp.isnan%28v%29%5D%20%3D%200%0A%20%20%20%20%20%20%20%20res%20%3D%20np.dot%28%28v%20-%20y_binary%29.T%2C%20Xbatch%29%0A%0A%20%20%20%20%20%20%20%20%23%20Calculate%20the%20gradient%20value%0A%20%20%20%20%20%20%20%20g%20%3D%20%281%20/%20batch_size%29%20*%20res%20+%20self.lammy%20*%20W%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20if%20True%20in%20np.isnan%28g%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20pdb.set_trace%28%29%0A%0A%20%20%20%20%20%20%20%20return%20f%2C%20g.flatten%28%29%0A%0A%0A%20%20%20%20def%20privateFun%28self%2C%20ww%2C%20batch_size%3D0%2C%20num_iterations%3D1%2C%20iter_num%3D0%29%3A%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%27%27%27%0A%20%20%20%20%20%20%20%20Reports%20the%20direct%20change%20to%20be%20applied%2C%20based%20on%20the%20given%20model.%0A%20%20%20%20%20%20%20%20Batch%20size%20could%20be%201%20for%20SGD%2C%20or%200%20for%20full%20gradient.%0A%20%20%20%20%20%20%20%20Specify%20the%20number%20of%20iterations%20for%20batching%20multiple%20iterations%20as%20in%20FEDAVG%0A%20%20%20%20%20%20%20%20%27%27%27%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Sudden%20adaptive%20attacks%20on%20training%20process%0A%0A%20%20%20%20%20%20%20%20%23%20Direct%0A%20%20%20%20%20%20%20%20%23%20if%20iter_num%20%26gt%3B%2015000%20and%20%28%22untargeted%22%20in%20self.dataset%29%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20return%20np.zeros%28ww.shape%5B0%5D%29%2C%200%0A%0A%20%20%20%20%20%20%20%20%23%20Slow%0A%20%20%20%20%20%20%20%20%23%20if%20iter_num%20%26gt%3B%20500000%20and%20%28%22untargeted%22%20in%20self.dataset%29%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%23return%20np.zeros%28ww.shape%5B0%5D%29%2C%200%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%23Linearly%20interpolate%20down%20the%20learning%20rate%20from%205000%20onwards%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20self.alpha%20%3D%20max%280.005%20-%20%280.0000005%20*%20%28iter_num%20-%205000%29%29%2C%200%29%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20if%20self.alpha%20%26lt%3B%200%3A%0A%20%20%20%20%20%20%20%20%23%20%20%20%20%20%20%20%20%20pdb.set_trace%28%29%0A%0A%20%20%20%20%20%20%20%20%23%20Take%20the%20total%20gradient%20locally%20over%20multiple%20iterations%0A%20%20%20%20%20%20%20%20ww%20%3D%20np.array%28ww%29%0A%20%20%20%20%20%20%20%20total_delta%20%3D%20np.zeros%28ww.shape%5B0%5D%29%0A%0A%20%20%20%20%20%20%20%20for%20it%20in%20range%28num_iterations%29%3A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%20Define%20constants%20and%20params%0A%20%20%20%20%20%20%20%20%20%20%20%20nn%2C%20dd%20%3D%20self.X.shape%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20batch_size%20%26gt%3B%200%20and%20batch_size%20%26lt%3B%20nn%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20idx%20%3D%20np.random.choice%28nn%2C%20batch_size%2C%20replace%3DFalse%29%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Just%20take%20the%20full%20range%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20idx%20%3D%20range%28nn%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20f%2C%20g%20%3D%20self.funObj%28ww%2C%20self.X%5Bidx%2C%20%3A%5D%2C%20self.y%5Bidx%5D%2C%20batch_size%29%0A%20%20%20%20%20%20%20%20%20%20%20%20delta%20%3D%20-self.alpha%20*%20g%0A%0A%20%20%20%20%20%20%20%20ww%20%3D%20ww%20+%20delta%0A%20%20%20%20%20%20%20%20total_delta%20%3D%20total_delta%20+%20delta%0A%0A%20%20%20%20%20%20%20%20return%20total_delta%2C%20f%0A%0A%0A%3C/pre%3E")
  },
  {
    taskID: '9530',
    name: 'test',
    status: 'Waiting',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/02/18 08:07',
    username: 'user220',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001'
  },
  {
    taskID: '9531',
    name: 'testtest',
    status: 'Waiting',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/02/18 08:07',
    username: 'user220',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001'
  },
  {
    taskID: '9532',
    name: 'testtesttest',
    status: 'Waiting',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/02/18 08:07',
    username: 'user220',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001'
  },
  {
    taskID: '9533',
    name: '【NLP】训练一个病历文本结构化模型',
    status: 'Processing',
    SCaddress: '0xd9145CCE52D386f254917e481eB44e9943F39138',
    iterations: 100,
    num: 10,
    numEachRound: 3,
    algorithm: 'VB-FedAVG',
    createAt: '2022/04/12 02:09',
    username: 'brother',
    clients: ['127.0.0.1:6001', '127.0.0.1:6002', '127.0.0.1:6003', '127.0.0.1:6004'],
    server: '127.0.0.1:3001'
  },
];